// 给你一个下标从 0 开始的整数数组 nums ，请你找到 最左边 的中间位置 middleIndex （也就是所有可能中间位置下标最小的一个）。

// 中间位置 middleIndex 是满足 nums[0] + nums[1] + ... + nums[middleIndex-1] == nums[middleIndex+1] + nums[middleIndex+2] + ... + nums[nums.length-1] 的数组下标。

// 如果 middleIndex == 0 ，左边部分的和定义为 0 。类似的，如果 middleIndex == nums.length - 1 ，右边部分的和定义为 0 。

// 请你返回满足上述条件 最左边 的 middleIndex ，如果不存在这样的中间位置，请你返回 -1 。

 

// 示例 1：

// 输入：nums = [2,3,-1,8,4]
// 输出：3
// 解释：
// 下标 3 之前的数字和为：2 + 3 + -1 = 4
// 下标 3 之后的数字和为：4 = 4

#include<bits/stdc++.h>
using namespace std;


class Solution {
public:
    int findMiddleIndex(vector<int>& nums) {
        int left=0;
        int right =nums.size();
        if(right==0){
            return -1;
        }
        if(right==1){
            return 0;
        }
        int sum_left=0,sum_right=0;
        --right;
        while(left<=right){
            if(sum_left<sum_right){
                sum_left += nums[left++];
            }
            else{
                sum_right += nums[right--];
            }
        }
        cout<<sum_left<<"  "<<sum_right<<"  "<<right<<endl;
        if(sum_left==(sum_right-nums[++right])){
            cout<<"test"<<endl;
            return right;
        }
        else{
            return -1;
        }
    }
};